1. Application Sharing
Many application programs have been developed to execute on a personal computer. Such application programs are developed to receive their input from the user of the personal computer upon which it is executing and to display their output to the user of that personal computer. Even though the personal computers may be connected in a computer network that facilitates the transferring of information between computers, such application programs can typically interact only with the user at the computer upon which they are executing.
Some computers have been developed to allow such application programs to be "shared" by users at other computers. An application program is shared by executing the application program on one computer, by displaying the output of the application program (i.e., output data) on the display of that one computer and another computer, and by receiving input for the application program from either that one computer or the other computer. The one computer upon which the application program executes is referred to as the "host computer," the other computer is referred to as "a shadow computer," and the application program is referred to as a "shared application program." To enable such sharing, a sharing system executes simultaneously at the host and each shadow computer and coordinates the collection and transmission of data among the computers. When the shared application program generates output data, the sharing system intercepts and transmits the intercepted output data to the shadow computers. The sharing system at each shadow computer receives the output data and controls displaying of the output data. The shadow sharing system also receives input data from a user of a shadow computer and transmits the input data to the host computer. The host sharing system receives the input data and submits the input data to the shared application program, which processes the input data as if it had been received from a user at the host computer.
FIG. 1 is a diagram illustrating computers that are sharing an application program using the sharing system. One computer, Computer A 110 is connected to two other computers, Computer B 120 and Computer C 130. Computer A includes a keyboard 112, a mouse 114, and a display 116. The display 116 shows the host window 118 for the application program that is being shared. In this example, the application program entitled "MICROSOFT WORD" is being shared and is executing on the host computer, Computer A. The output data of the shared application program is being displayed in the host window 118. The host sharing system intercepts the output data of the shared application program that is directed to the host window 118. The host sharing system broadcasts the intercepted output data to each shadow computer, Computer B 120 and Computer C 130. The host sharing system also forwards the intercepted output data to the operating system of the host computer to be displayed in a normal manner within host window 118.
Computer B, a shadow computer, includes a keyboard 122, a mouse 124, and a display 126. When the shadow computer receives the intercepted output data, the shadow sharing system creates a shadow window 128 that corresponds to the host window 118 and that is registered with the operating system at Computer B. The shadow sharing system at Computer B then forwards the received output data to the operating system of Computer B for display in the shadow window 128. Similarly, Computer C, a shadow computer, receives the intercepted output data. The shadow sharing system at Computer C creates a shadow window 138 that corresponds to the host window 118 and that is registered with the operating system at Computer C. The shadow sharing system at Computer, C then forwards the received output data to the operating system of Computer C for display in the shadow window 138. Thus, all output data of the shared application program is displayed on all computers sharing that application program.
In addition, the sharing system allows a user of any computer sharing an application program to input data to the shared application program. For example, the user can input data using keyboard 122 of Computer B. The shadow sharing system at Computer B intercepts the input data and forwards the input data to the host sharing system at Computer A. The host sharing system forwards the input data to the operating system of the host computer, which forwards the input data to the shared application program for processing as if the input data had been entered on keyboard 112. When the shared application program then outputs data to host window 128 in response to receiving the input data, the host sharing system at Computer A intercepts the output data and broadcasts the intercepted output data to the shadow sharing system at Computer B, which updates shadow window 128, and to the shadow sharing system at Computer C, which updates shadow window 138.
Similarly, when a user of the host computer inputs data through keyboard 112 or mouse 114, the host sharing system at Computer A forwards the input data to the operating system of the host computer, which forwards the input data to the shared application program for processing as normal. Thus, to a user of the shadow computer, the shared application program looks as though it is executing on the shadow computer.
In one example of application sharing, an editor who is working with an editorial staff to publish a newspaper can benefit from sharing an application program that generates a word processing document. In particular, the contents of the newspaper can be stored as a word processing document, and the editor can edit the format of each page of the word processing document at the editor's computer and allow the members of the editorial staff to view the word processing document at their computers. The editor can share the word processing program with each staff member. The members of the editorial staff can view the changes made by the editor and provide input to the word processing program to modify the document based on the editor's revisions. Immediately, the editor can review these modifications to the document.
2. Routing Problem
If computers are connected serially, as they are in the system illustrated in FIG. 1, the data is transmitted from one computer to the next, sequentially. For example, Computer A is connected to Computer B, which is connected to Computer C. For a host sharing system at Computer A to transmit output data from a shared application program to shadow computers Computer B and Computer C for display, the host sharing system at Computer A transmits the output data first to the shadow sharing system at Computer B. The shadow sharing system at Computer B stores the data in a queue and forwards the data to the shadow sharing system at Computer C. Simultaneously, the shadow sharing system at Computer B processes the output data and displays it. The shadow sharing system at Computer C receives output data from the shadow sharing system at Computer B, stores it in a queue, and processes and displays the queued output data.
When computers are connected in this manner or connected through any network, the shadow computers will invariable receive the output data at different times. Because users share application programs in order to view the same output data at the same time, as in the example of the editor above, it is important that all of the sharing systems display the same output data at approximately the same time.
The following example illustrates this problem. In the example, the host sharing system at Computer A transmits output data to the shadow sharing system at Computer B at 28.8 baud, and the shadow sharing system at Computer B transmits output data to the shadow sharing system at Computer C at only 14.4 baud. The host sharing system at Computer A transmits as much output data to the shadow sharing system at Computer B as the shadow sharing system at Computer B can receive at 28.8 baud. Then, the shadow sharing system at Computer B stores the output data in its queue, and transmits as much output data to the shadow sharing system at Computer C as the shadow sharing system at Computer C can receive at 14.4 baud. As the shadow sharing system at Computer B transmits output data to the shadow sharing system at Computer C at only 14.4 baud, the shadow sharing system at Computer B continues to receive output data from the host sharing system at Computer A and stores additional output data that is to be transmitted to the shadow sharing system at Computer C. Because the shadow sharing system at Computer C receives the output data that the sharing systems at Computer A and Computer B at a time later than those sharing systems, the shadow sharing system at Computer C falls increasingly behind processing and displaying the output data relative to the output data that the sharing systems at Computer A and Computer B are displaying. Therefore, the user at Computer C does not view the same data at the same time as the users at Computer A and Computer B.
Some systems could solve the routing problem discussed above by allowing only a predetermined amount of output data to be in transit for an application program. In particular, these systems could allow a host sharing system to transmit a predetermined amount of output data. Then, the host sharing system computer waits for an indication of receipt of output data from the last shadow sharing system that is to receive the output data. The host sharing system can transmit additional output data only after receiving the indication. Because additional output data is not transmitted until the last shadow sharing system receives the output data, each sharing system will have received and displayed the same output data. For example, the host sharing system at Computer A displays output data and transmits output data to the shadow sharing system at Computer B. The shadow sharing system at Computer B receives the output data, transmits an indication that it has received the output data to the host sharing system at Computer A, and transmits the output data to the shadow sharing system at Computer C. Simultaneously, the shadow sharing system at Computer B processes and displays the output data. When the shadow sharing system at Computer C receives the output data, the shadow sharing system at Computer C transmits an indication that it has received the output data to the host sharing system at Computer A. Simultaneously, the shadow sharing system at Computer C processes and displays the output data. Therefore, the sharing systems at Computers A, B, and C display the same output data at approximately the same time. Only after receiving the indication from both the shadow sharing system at Computers B and C can the host sharing system at Computer A transmit additional output data.